package com.assembly.system.service;

import com.assembly.entities.SystemUser;
import com.assembly.system.req.UserREQ;
import com.assembly.system.req.UserUpdatePasswordREQ;
import com.assembly.util.base.Result;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 * 平台用户信息表 服务类
 * </p>
 *
 * @author 丽人平台-www.assembly.com
 * @since 2021-03-29
 */
public interface IUserService extends IService<SystemUser> {
    /***
     * 用户注册
     * @param user
     * @return
     */
    Result userRegister(SystemUser user);

    /***
     * 用户列表查询
     * @param userREQ
     * @return
     */
    IPage<SystemUser> findListByUser(UserREQ userREQ);

    /**
     * 根据 ID查询用户信息
     * @param id
     * @return
     */
    SystemUser findUserById(String id);

    /***
     * 根据账号 查询用户信息
     * @param account
     * @return
     */
    SystemUser findUserByAccount(String account,int type);


    /***
     * 根据账号 查询用户信息
     * @param mobile
     * @return
     */
    SystemUser findUserByMobile(String mobile,int type);

    /***
     * 根据 微信 openId 查询用户信息
     * @param wxOpenId
     * @return
     */
    SystemUser findUserByWxOpenId(String wxOpenId,int type);

    /***
     * 根据阿里的OpenID 查询用户信息
     * @param alipayOpenId
     * @return
     */
    SystemUser findUserByAlipayOpenId(String alipayOpenId,int type);

    /***
     * 根据QQ的openId  查询用户信息
     * @param qqOpenId
     * @return
     */
    SystemUser findUserByQQOpenId(String qqOpenId,int type);

    /***
     * 修改密码
     * @param userUpdatePasswordREQ
     */
    Result  updatePassWord(UserUpdatePasswordREQ userUpdatePasswordREQ);

    /***
     * 校验用户名是否存在
     * @param account
     * @param type
     * @return
     */
    boolean checkAccount(String account,int type);
    /***
     * 校验用手机是否存在
     * @param mobile
     * @param type
     * @return
     */
    boolean checkMobile(String mobile,int type);

    /***
     * 校验身份证是否存在
     * @param identity
     * @param type
     * @return
     */
    boolean checkIdentity(String identity,int type);



}
